
module rmii_mgr_test(
                fpga_pll1clk             ,       //50M时钟输入
                nRST                     ,       //复位信号，低电平有效
                //LED
                LED_H_ERR1                ,       //               
                LED_H_ERR2                ,       //  
                LED_LED43                 ,       // 
                LED_LED42                 ,       // 
                LED_LED41                 ,       //  

                RXD2_1                    ,       // PHY1 RXD[1]

                MDC                       ,       //两路PHY管理信号
                MDIO                      ,       //两路PHY管理信号

                H_ONLN1                   ,       // PHY0 Link 状态，低电平表示Link 
                TXD1_1                    ,       // PHY0 TXD[1] 
                TXD1_0                    ,       // PHY0 TXD[0]
                CRS_DV1                   ,       // PHY0 CRS_DV  
                TXEN1                     ,       // PHY0 TXEN
                RXD1_1                    ,       // PHY0 RXD[1]
                RXD1_0                    ,       // PHY0 RXD[0]
                FPGA_RST_n                ,       // PHY0和PHY1 复位信号，低电平有效，默认给高
                RXD2_0                    ,       // PHY1 RXD[0]
                H_ONLN2                   ,       // PHY1 Link 状态，低电平表示Link
                PHY_CLK                   ,       // PHY0和PHY的时钟
                CRS_DV2                   ,       // PHY1 CRS_DV
                TXD2_0                    ,       // PHY1 TXD[0]
                TXEN2                     ,       // PHY1 TXEN
                TXD2_1                    ,       // PHY1 TXD[1]
                TT1                       ,       // 跳线，可给高或者低     
                TT2                               // 跳线，可给高或者低
            
		);


    (* chip_pin = "E13" *) input            fpga_pll1clk            ;
    (* chip_pin = "F13" *) input            nRST                    ;

    (* chip_pin = "D1" *) output          LED_H_ERR1              ;               
    (* chip_pin = "E1" *) output          LED_H_ERR2              ; 
    (* chip_pin = "C1" *) output          LED_LED43               ;
    (* chip_pin = "B1" *) output          LED_LED42               ;
    (* chip_pin = "B2" *) output          LED_LED41               ;

    (* chip_pin = "M4" *) output          MDC                     ;       //两路PHY管理信号
    (* chip_pin = "N4" *) inout           MDIO                    ;       //两路PHY管理信号

    (* chip_pin = "N3" *) input           RXD2_1                  ;       // PHY1 RXD[1]


    (* chip_pin = "M5" *) input           H_ONLN1                 ;       // PHY0 Link 状态，低电平表示Link 
    (* chip_pin = "N5" *) output          TXD1_1                  ;       // PHY0 TXD[1] 
    (* chip_pin = "N6" *) output          TXD1_0                  ;       // PHY0 TXD[0]
    (* chip_pin = "N7" *) input           CRS_DV1                 ;       // PHY0 CRS_DV  
    (* chip_pin = "M7" *) output          TXEN1                   ;       // PHY0 TXEN
    (* chip_pin = "N8" *) input           RXD1_1                  ;       // PHY0 RXD[1]
    (* chip_pin = "M8" *) input           RXD1_0                  ;       // PHY0 RXD[0]
    (* chip_pin = "M9" *) output          FPGA_RST_n              ;       // PHY0和PHY1 复位信号，低电平有效，默认给高
    (* chip_pin = "M3" *) input           RXD2_0                  ;       // PHY1 RXD[0]
    (* chip_pin = "J1" *) input           H_ONLN2                 ;       // PHY1 Link 状态，低电平表示Link
    (* chip_pin = "M1" *) output          PHY_CLK                 ;       // PHY0和PHY的时钟
    (* chip_pin = "M2" *) input           CRS_DV2                 ;       // PHY1 CRS_DV
    (* chip_pin = "L1" *) output          TXD2_0                  ;       // PHY1 TXD[0]
    (* chip_pin = "L2" *) output          TXEN2                   ;       // PHY1 TXEN
    (* chip_pin = "K1" *) output          TXD2_1                  ;       // PHY1 TXD[1]
    (* chip_pin = "K2" *) input           TT1                     ;       // 跳线，可给高或者低     
    (* chip_pin = "A2" *) input           TT2                     ;       // 跳线，可给高或者低
    
    //暂未用到的输出
    assign MDC =  1'b1;
    assign MDIO = 1'b1;
    assign LED_H_ERR1 = 1'b0;
    assign LED_H_ERR2 = 1'b1;




    //重新定义PHY0的信号名称
    wire            phy0_rxdv               ;
    wire    [1:0]   phy0_rxd                ;
    wire            phy0_txen               ;
    wire    [1:0]   phy0_txd                ;
    assign phy0_rxdv = CRS_DV1              ;
    assign phy0_rxd = {RXD1_1,RXD1_0}       ;
    assign TXEN1 = phy0_txen                ;
    assign {TXD1_1,TXD1_0} = phy0_txd       ;

    //重新定义PHY1的信号名称
    wire            phy1_rxdv               ;
    wire    [1:0]   phy1_rxd                ;
    wire            phy1_txen               ;
    wire    [1:0]   phy1_txd                ;
    assign phy1_rxdv = CRS_DV2              ;
    assign phy1_rxd = {RXD2_1,RXD2_0}       ;
    assign TXEN2 = phy1_txen                ;
    assign {TXD2_1,TXD2_0} = phy1_txd       ;

    wire    sys_clk                         ;
    wire    sys_reset_n                     ;
    assign sys_clk  = fpga_pll1clk          ;
    assign sys_reset_n = nRST               ;

    
    //测试信号
    wire                rxdv                ;
    wire    [1:0]       rxd                 ;
    wire                phy0_close          ;
    wire                phy1_close          ;  
    rmii_mgr    u_rmii_mgr(
            .sys_clk        (           sys_clk         ),       //时钟信号 50Mhz
            .sys_reset_n    (           sys_reset_n     ),       //复位
            
            //PHY0
            .phy0_rxdv      (           phy0_rxdv       ),
            .phy0_rxd       (           phy0_rxd        ),
            .phy0_txen      (           phy0_txen       ),
            .phy0_txd       (           phy0_txd        ),
            .phy0_link      (           H_ONLN1         ),
            .phy0_close     (           phy0_close      ),

            //PHY1
            .phy1_rxdv      (           phy1_rxdv       ),
            .phy1_rxd       (           phy1_rxd        ),
            .phy1_txen      (           phy1_txen       ),
            .phy1_txd       (           phy1_txd        ),
            .phy1_link      (           H_ONLN2         ),
            .phy1_close     (           phy1_close      ),

            //PHY公共信号
            .phy_clk        (           PHY_CLK         ),
            .phy_reset_n    (           FPGA_RST_n      ),
            .phy_link_lock  (           1'b0            ),   //phy连接状态锁定，关闭自动闭合
            

            //报文处理端信号, 测试，先做个环路
            .rxdv           (           rxdv            ),
            .rxd            (           rxd             ),
            .txen           (           rxdv            ),
            .txd            (           rxd             )
        );

    //led test
    logic [22:0]  led_cnt_r;
    always_ff @(posedge sys_clk or negedge sys_reset_n)
    if(~sys_reset_n)
        led_cnt_r <= '0;
    else
        led_cnt_r <= led_cnt_r + 1'b1;

    assign LED_LED41 = led_cnt_r[22];

    assign LED_LED42 = phy0_close;
    assign LED_LED43 = phy1_close;
endmodule
